package com.woniuxy.portal.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;

/**
 * 什么时候用@RestController？
 * 1、@RestController是一个组合注解，相当于@Controller + @ResponseBody
 * 2、对于前端异步请求，返回json时候时候，因为@ResponseBody可以自动把方法返回结果转换为json字符串返回
 * 3、适合整个控制器返回的都是json数据时候使用。
 *
 * @Controller 1、修饰控制层组件，用于处理请求及响应
 * 2、也可以实现页面跳转
 * 3、如果使用模板引擎，控制器使用@Controller注解，控制器方法返回字符串，返回的字符串就是页面名称，
 * 页面的前缀： classpath:/templates/
 * 页面的后缀： .html
 * 完整跳转路径： 前缀 + 控制器返回的字符串 + 后缀
 * 举例：/templates/  + "hello" +  .html
 */
@Controller
public class TestController {

    /**
     * 请求路径：http://localhost:9000/hello
     * 跳转的页面路径：
     * /templates/  + "hello" +  .html
     */
    @GetMapping("/hello")
    public String hello(Model model) {
        // 保存数据到请求域
        // 相当于request.setAttribute()
        model.addAttribute("myname", "xiaoyuan");
        // 自动跳转到: /templates/hello.html
        // 注意：/templates 目录下的资源是受保护的，不能直接访问；必须通过后台转发。
        return "hello";
    }
}
